#include<reg51.h>
sbit _7SEG1 = P2^0;
sbit _7SEG2 = P2^1;
sbit _7SEG3 = P2^2;
sbit _7SEG4 = P2^3;

void delay(unsigned int a)
{
    while(a--);
}

static unsigned char num[10] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xd8, 0x80, 0x90};

unsigned char string[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};

void main()
{
    unsigned char i,j;
    unsigned char length  =10, temp;
    while (1)
    {
        for ( j = 0; j < 20; j++)
        {
            for ( i = 0; i < 4; i++)
            {
                _7SEG1 = 0;
                _7SEG2 = 0;
                _7SEG3 = 0;
                _7SEG4 = 0;
                P0 = num[string[i]-48];
                switch (i)
                {
                case 0:
                    _7SEG1 = 1;
                    break;
                case 1:
                    _7SEG2 = 1;
                    break;
                case 2:
                    _7SEG3 = 1;
                    break;
                case 3:
                    _7SEG4 = 1;
                    break;
                }
                delay(500);
            }
        }
        temp = string[0];
        for (i = 0; i < length-i; i++)
        {
            string[i] = string[i+1];
        }
        string[9] = temp;
    }

}

// #include "reg51.h"
// #define uchar unsigned char

// uchar display_code[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
// uchar display_data[8] = {0, 0, 0, 0, 0, 0, 0, 0};

// void delay(void)
// {
//     uchar i;
//     for (i = 2; i > 0; i--);
// }
// void display()
// {
//     uchar i, k;
//     k = 0x80;
//     for (i = 0; i < 8; i++)
//     {
//         P2 = 0;
//         P0 = display_code[display_data[i]];
//         P0 = ~P0;
//         P2 = k;
//         k = k >> 1;
//         delay();
//     }
//     P2 = 0;
// }
// void calc()
// {
//     display_data[7]++;
//     if (display_data[7] > 9)
//     {
//         display_data[7] = 0;
//         display_data[6]++;
//         if (display_data[6] > 5)
//         {
//             display_data[6] = 0;
//         }
//     }
// }
// void main(void)
// {
//     uchar i;
//     while (1)
//     {
//         for (i = 0; i < 250; i++)
//         {
//             display();
//         }
//         calc();
//     }
// }